package com.hao.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class PCBProcess {
    private Integer name;//进程标识符

    private Integer status;//进程状态。0就绪，1死亡，2运行

    private Integer pri;//进程优先数

    private Integer time;//剩余运行时间，以时间片为单位，当减至 0 时该进程终止

    /**
     * 模拟一次运行。时间减1
     * 并返回最新运行时间
     * @return
     */
    public Integer execute(Integer executeTime) {
        this.time = Math.max((this.time - executeTime), 0);//如果调度时间超过运行时间了，取0
        return this.time;
    }

    /**
     * 优先级减1.并返回最新优先级
     */
    public Integer cutPri() {
        this.pri--;
        return this.pri;
    }
}
